"""
sklearn是学习人工智能技术技术必须掌握的库，其中有一份糖尿病患者的数据sklearn.datasets中的load_diabetes，请按照以下要求，正确实现线性回归：
"""
# 1)	导入相关的库，包括但不限于sklearn，numpy等等
import sklearn as sk
from sklearn.datasets import load_diabetes
import numpy as np
from sklearn.model_selection import train_test_split

# 2)	从sklearn库中加载相应的数据
data = load_diabetes()

# 3)	打印输出数据中的键
print(data.keys())

# 4)	正确取出data和target中的数据分别作为X和Y
X = data['data']
Y = data['target']

# 5)	打印输出X，Y数据维度，并打印出前5个X,Y数据
print('X', X.shape)
print('Y', Y.shape)
print(X[:5])
print(Y[:5])

# 6)	仅取出X数据中的一个特征做训练
X = X[:, 0]

# 7)	切分训练集，测试集
x_train, x_test, y_train, y_test = train_test_split(X, Y, train_size=0.7, random_state=1, shuffle=True)


# 8)	编写一个类，需要包含：代价函数，训练函数，测试函数
class DiabetesModel(object):
    pass
    # 9)	代价函数使用MSE均方误差
# 10)	正确在类中编写训练的函数，设置迭代次数为20000，学习率为0.1
# 11)	在类中编写出预测的方法
# 12)	实例化该类，并进行训练
# 13)	每500次打印，并输出代价
# 14)	绘出训练的学习曲线
# 15)	绘出模型预测值和真实值的散点图
# 16)	进行模型评估，计算R2值

